package com.example.controller;

import com.example.domain.ResponseCode;
import com.example.domain.ResponseResult;
import com.example.service.LogoutService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 最常见的原因是 跟 Spring Security 自带的 /logout 冲突了：
 * Spring Security 默认开启了 LogoutFilter，默认的登出端点是 POST /logout（需要 CSRF token；启用 CSRF 时用 GET/HEAD/PUT/DELETE 不允许）。
 * 你又自己写了一个 GET /logout 的控制器。
 * 请求命中路径 /logout 后，Security 的过滤器链/HandlerMapping 优先级会导致 控制器没有按你预期接管 GET，于是 MVC 侧抛出“该路径不支持 GET”的 405。
 */
@RequiredArgsConstructor
@RestController
@RequestMapping("/logout")
public class LogoutController {

    private final LogoutService logoutService;

    @GetMapping("/user")
    public ResponseResult logout() {
        logoutService.logout();
        return new ResponseResult(
                ResponseCode.LOGOUT_SUCCESS,
                "登出成功",
                null
        );
    }

}
